package com.hidewnd.shiro.plugins;

import com.mikuac.shiro.common.utils.MsgUtils;
import com.mikuac.shiro.core.Bot;
import com.mikuac.shiro.core.BotMessageEventInterceptor;
import com.mikuac.shiro.dto.event.message.GroupMessageEvent;
import com.mikuac.shiro.dto.event.message.MessageEvent;
import com.mikuac.shiro.exception.ShiroException;
import org.springframework.stereotype.Component;

/**
 * 拦截器
 */
@Component
public class InterceptorExample implements BotMessageEventInterceptor {
    @Override
    public boolean preHandle(Bot bot, MessageEvent event) throws ShiroException {
        // 预处理方法，可以在触发事件前做一些处理，返回值为 false 时本次事件将会被拦截
        // 使用场景可以是黑名单检查或检查权限等等，具体的使用场景可以发挥自己的想象力
        // MessageEvent 可能为右边这三种类型 PrivateMessageEvent、GroupMessageEvent、GuildMessageEvent
        String message = event.getMessage();
        String messageType = event.getMessageType();
        if (message.contains("敏感")) {
            String sendMsg = MsgUtils.builder()
                    .face(37)
                    .text("检测敏感数据，中止执行")
                    .build();
            if ("group".equals(messageType)) {
                bot.sendGroupMsg(((GroupMessageEvent) event).getGroupId(), sendMsg, false);
            }
            return false;
        }
        return true;
    }

    @Override
    public void afterCompletion(Bot bot, MessageEvent event) throws ShiroException {
        // 后置处理方法
        // 当 preHandle 返回值为 true 时则会执行 plugin-list，执行完毕后进入到 afterCompletion
    }
}
